#ifndef MYSQL_ORM_H
#define MYSQL_ORM_H

#include <mysql/mysql.h>
#include <string>
#include <vector>
#include <map>

class MySQLORM {
private:
    static MySQLORM* instance;
    MYSQL* conn;

    // 私有构造函数
    MySQLORM(const std::string& server, const std::string& user, const std::string& password, const std::string& database);

    // 禁用拷贝构造函数和赋值运算符
    MySQLORM(const MySQLORM&) = delete;
    MySQLORM& operator=(const MySQLORM&) = delete;

    // 私有析构函数
    ~MySQLORM();

public:
    // 获取单例实例
    static MySQLORM* getInstance(const std::string& server, const std::string& user, const std::string& password, const std::string& database);

    // 插入数据
    bool insert(const std::string& table, const std::map<std::string, std::string>& data);

    // 删除数据
    bool remove(const std::string& table, const std::string& condition);

    // 查询数据
    std::vector<std::map<std::string, std::string>> select(const std::string& table, const std::string& columns = "*", const std::string& condition = "");

    // 更新数据
    bool update(const std::string& table, const std::map<std::string, std::string>& data, const std::string& condition);
};

#endif // MYSQL_ORM_H